home *** CD-ROM | disk | FTP | other *** search
/ Utilities Professional 1-1500 / Utilities Professional 1-1500 (1994)(WPD)[!].iso / 12511500 / var1463.dms / var1463.adf / BBBBS72.lha / rexx / ChangeUserName.rexx < prev    next >
OS/2 REXX Batch file  |  1993-11-13  |  4KB  |  184 lines

  1. /* $VER: ChangeUserName.rexx 6.6 (12.11.93)
  2.  * copyright 1991-93 Richard Lee Stockton
  3.  * FREELY DISTRIBUTABLE
  4. */
  5.  
  6. SIGNAL ON BREAK_C
  7. SIGNAL ON BREAK_E
  8. IF ADDRESS()='BAUD' THEN CR='0D'x
  9. ELSE CR=''
  10.  
  11. PARSE ARG OLD_NAME
  12. IF STRIP(OLD_NAME)='' THEN OLD_NAME=GETCLIP('BBS_oldname')
  13. IF STRIP(OLD_NAME)='' THEN
  14.   DO
  15.     SAY '  Usage:  rx  ChangeUserName  OLD_USER_NAME'
  16.     SAY 'Example:  rx  ChangeUserName  THE_MAD_HACKER'
  17.     CALL BYE(10)
  18.   END
  19. OLD_NAME=TRANSLATE(STRIP(UPPER(OLD_NAME)),'_',' ')
  20. OLD_NAME=COMPRESS(OLD_NAME,'.')
  21.  
  22. bbspath=GETCLIP('BBS_path')
  23. IF bbspath='' THEN
  24.   DO
  25.     figarg='s:CONFIG.BBS'
  26.     IF ~EXISTS(figarg) THEN figarg='BBS:BBS_TEXT/CONFIG.BBS'
  27.     x=OPEN(f,figarg,'R')
  28.     IF x=0 THEN
  29.       DO
  30.         SAY 's:CONFIG.BBS and BBS:BBS/CONFIG.BBS are both missing!'
  31.         EXIT(20)
  32.       END
  33.     lynes.=''
  34.     DO i=1 TO 6
  35.       lynes.i=READLN(f)
  36.     END
  37.     CALL CLOSE(f)
  38.     bbspath=WORD(lynes.6,1)
  39.     IF bbspath='' | ~EXISTS(bbspath) THEN
  40.       DO
  41.         SAY 'The bbspath, 'bbspath', does not exist!'
  42.         CALL BYE(1);
  43.       END
  44.   END
  45.  
  46. /* load first line of userfile */
  47.  
  48. SAY OLD_NAME
  49. x=OPEN(f,bbspath'Users/'OLD_NAME,'R')
  50. IF x=0 THEN EXIT(2);
  51. fullname=READLN(f)
  52. CALL CLOSE(f);
  53.  
  54.  
  55. /* let operator enter new name */
  56.  
  57. SAY 'Full Name:' fullname||CR
  58. OPTIONS PROMPT 'User Name: '
  59. PULL NEW_NAME
  60. IF STRIP(NEW_NAME)='' THEN NEW_NAME=UPPER(fullname)
  61. NEW_NAME=cleanstring(NEW_NAME)
  62. IF EXISTS(bbspath'Users/'NEW_NAME) THEN
  63.   DO
  64.     SAY NEW_NAME 'already exists!'CR
  65.     CALL BYE(3);
  66.   END
  67.  
  68. OPTIONS PROMPT 'Rename' OLD_NAME 'to' NEW_NAME '? (y/N) > '
  69. PULL temp
  70. IF UPPER(LEFT(temp,1))~='Y' THEN EXIT(0)
  71.  
  72.  
  73. /* rename */
  74.  
  75. SAY 'Renaming User files...'CR
  76. CALL RENAME(bbspath'Users/'OLD_NAME,bbspath'Users/'NEW_NAME)
  77. CALL RENAME(bbspath'Email/'OLD_NAME,bbspath'Email/'NEW_NAME)
  78. CALL RENAME(bbspath'EmailFiles/'OLD_NAME,bbspath'EmailFiles/'NEW_NAME)
  79.  
  80. OPTIONS PROMPT 'Re-Address Email FROM' OLD_NAME'? (y/N) > '
  81. PULL temp
  82. IF UPPER(LEFT(temp,1))='Y' THEN
  83.   DO
  84.     SAY 'Re-Addressing EMail...'CR
  85.     emailist=SHOWDIR(bbspath'Email','D')
  86.     DO i=1 TO WORDS(emailist)
  87.       user=WORD(emailist,i)
  88.       email=SHOWDIR(bbspath'Email/'user,'F')
  89.       DO j=1 TO WORDS(email)
  90.         mail=WORD(email,j)
  91.         IF POS(OLD_NAME,mail)>0 THEN
  92.           DO
  93.             x=OPEN(f,bbspath'EMail/'user'/'mail,'R')
  94.             IF x=0 THEN
  95.               DO
  96.                 SAY user'/'mail 'failed to open for reading!'CR
  97.                 ITERATE j
  98.               END
  99.             lynes.=''
  100.             DO k=1
  101.               line=READLN(f)
  102.               IF EOF(f) THEN LEAVE k
  103.               lynes.k=line
  104.             END
  105.             CALL CLOSE(f)
  106.             lynes.0=k-1
  107.             PARSE VAR lynes.2 ltemp junk rtemp
  108.             lynes.2=' 'ltemp NEW_NAME||rtemp
  109.             PARSE VAR mail junk'.'num
  110.             CALL DELETE(bbspath'EMail/'user'/'mail)
  111.             mail=NEW_NAME'.'num
  112.             x=OPEN(f,bbspath'EMail/'user'/'mail,'W')
  113.             IF x=0 THEN
  114.               DO
  115.                 SAY user'/'mail 'failed to open for writing!'CR
  116.                 ITERATE j
  117.               END
  118.             DO k=1 TO lynes.0
  119.               CALL WRITELN(f,lynes.k)
  120.             END
  121.             CALL CLOSE(f)
  122.           END
  123.       END
  124.     END
  125.   END
  126.  
  127. CALL DELETE(bbspath'Lists/Users')
  128. CALL SETCLIP('BBS_newname',NEW_NAME)
  129. IF GETCLIP('BBS_oldname')='' THEN
  130.   DO
  131.     IF SHOW('P','BBBBS') THEN CALL SETCLIP('BBS_localusers',1)
  132.     IF SHOW('P','BBBBS_LOCAL') THEN CALL SETCLIP('BBS_mainusers',1)
  133.   END
  134. ELSE CALL SETCLIP('BBS_oldname')
  135. IF ARG()>0 THEN SAY 'Done!'
  136. CALL BYE(0);
  137.  
  138.  
  139. BYE:
  140. ARG byearg
  141. EXIT(byearg);
  142.  
  143.  
  144. BREAK_C:
  145. BREAK_E:
  146. SAY '*** CTRL BREAK'CR
  147. EXIT(5);
  148.  
  149.  
  150. cleanstring:
  151. PARSE ARG cstr
  152. bot=TRIM(XRANGE(,' '))
  153. top=XRANGE('7F'x)
  154. bot=bot||XRANGE('!','@')'[\]`~{:}'
  155. cstr=TRANSLATE(UPPER(cstr),' ','_')
  156. cstr=COMPRESS(cstr,bot||top)
  157. cstr=STRIP(cstr)
  158. cstr=SPACE(cstr,1,'_')
  159. RETURN cstr
  160.  
  161.  
  162.  
  163. /*********  THESE NEXT TWO ROUTINES NOT YET IMPLEMENTED!  *********/
  164.  
  165.  
  166. /* search filenotes for OLD_NAME and replace with NEW_NAME */
  167. do_filenotes:
  168. OPTIONS PROMPT 'Search filenotes and replace' OLD_NAME 'with' NEW_NAME '? '
  169. PULL temp
  170. IF UPPER(LEFT(temp,1))~='Y' THEN CALL BYE(1)
  171.   DO
  172.   END
  173. RETURN
  174.  
  175.  
  176. /* search message bases for OLD_NAME and replace with NEW_NAME */
  177. do_msgs:
  178. OPTIONS PROMPT 'Search message bases and replace' OLD_NAME 'with' NEW_NAME '? '
  179. PULL temp
  180. IF UPPER(LEFT(temp,1))~='Y' THEN CALl BYE(1);
  181. RETURN
  182.  
  183. /* ChangeUserName.rexx */
  184.